home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / misc / emu / msh-156.lha / util / ignore.c < prev    next >
C/C++ Source or Header  |  1996-12-22  |  2KB  |  81 lines

  1. /*
  2.  * $Id: ignore.c,v 1.56 1996/12/22 17:13:23 Rhialto Rel $
  3.  *
  4.  *  IGNORE.C
  5.  *
  6.  *  Makes it possible to ignore CRC errors.
  7.  *
  8.  *  This code is (C) Copyright 1989-1993 by Olaf Seibert. All rights reserved.
  9.  *  May not be used or copied without a licence.
  10.  */
  11.  
  12. #include "device.h"
  13. #include <string.h>
  14. #include <stdlib.h>
  15.  
  16. #ifndef CLIB_DOS_PROTOS_H
  17. #include <clib/dos_protos.h>
  18. #endif
  19.  
  20. const char    idString[] = "$""VER: Ignore $Revision: 1.56 $ $Date: 1996/12/22 17:13:23 $\r\n";
  21.  
  22. Puts(char *string)
  23. {
  24.     Write(Output(), string, (long)strlen(string));
  25. }
  26.  
  27. int
  28. main(int argc, char **argv)
  29. {
  30.     struct MsgPort *port;
  31.     struct IOExtTD *tdreq;
  32.     UNIT *unit;
  33.     long unitnr;
  34.     int yesno;
  35.     int rc = 10;
  36.  
  37.     if (argc < 2) {
  38.     Puts("Usage: ignore <unitnr> <YES/NO>\n");
  39.     Puts("       If Yes, CRC errors will be ignored.\n");
  40.     return rc;
  41.     }
  42.  
  43.     unitnr = atoi(argv[1]);
  44.     /*
  45.      *    Don't be misled by the name CRC_UNCHECKED.
  46.      *    It means the opposite happens.
  47.      */
  48.     if (argc > 2)
  49.     yesno = ((argv[2][0] & 0x5F) == 'Y') ? TDERR_NoError : CRC_UNCHECKED;
  50.     else
  51.     yesno = -42;
  52.  
  53.     if (port = CreatePort(NULL, 0L)) {
  54.     if (tdreq = (struct IOExtTD *)CreateExtIO(port, (long)sizeof(*tdreq))) {
  55.         OpenDevice("messydisk.device", unitnr, (struct IORequest *)tdreq,
  56.                0L);
  57.         if (tdreq->iotd_Req.io_Device) {
  58.         unit = (UNIT *)tdreq->iotd_Req.io_Unit;
  59.         if (yesno != -42) {
  60.             unit->mu_InitSectorStatus = yesno;
  61.             rc = 0;
  62.         } else if (unit->mu_InitSectorStatus == CRC_UNCHECKED) {
  63.             Puts("No\n");
  64.             rc = 0;
  65.         } else {
  66.             Puts("Yes\n");
  67.             rc = 5;
  68.         }
  69.         CloseDevice((struct IORequest *)tdreq);
  70.         } else
  71.         Puts("Cannot OpenDevice messydisk\n");
  72.         DeleteExtIO((struct IORequest *)tdreq);
  73.     } else
  74.         Puts("No memory for I/O request\n");
  75.     DeletePort(port);
  76.     } else
  77.     Puts("No memory for replyport\n");
  78.  
  79.     return rc;
  80. }
  81.